package template_funcs

import (
	"app/app_src/framework/i18n"
	"regexp"
)

type ScriptI18nFunc func(url string) string

var _MatchingRegexp *regexp.Regexp
var _ReplacementBytes []byte

func init() {
	var err error

	_ReplacementBytes = []byte(`\$1`)
	_MatchingRegexp, err = regexp.Compile(`('|"|\\)`)

	if err != nil {
		panic(err)
	}
}

// 对脚本中的文本做国际化处理
func NewScriptI18nFunc() ScriptI18nFunc {
	result := func(msg string) string {
		msg = i18n.T(msg)

		// 因为脚本里的多语言函数主要写在字符串里，
		// 所以对单引号、双引号、右斜杠做转义处理。
		bytes := _MatchingRegexp.ReplaceAll([]byte(msg), _ReplacementBytes)

		return string(bytes)
	}

	return result
}
